Sachant les problèmes qu’on a avec l’ID unique, pour l’analyse stat on sera obligé d’exclure tous les IDs non unique. Malheureusement la variable filière pour le “test 2” est impossible à reconstruire sans créer des doublons donc c’est le seul choix qu’on a pour l’analyse. Mais voyons quand même celui qui était notre point de départ.
A ce point là on a 866 quesitonnaires mais nous n’avons pas une idée précise de combien de sujets uniques on peut être certains d’avoir. Actuallement a 380 IDs differents mais du coup on a 106 doublons.
16 on peut les exclure parce que ils sont vides et 4 parce que l’ID est manquant, pour arriver à 850 questionnaires et 379 IDs. Mettons maintenant les doublons en évidence.
Comme tu peux le voir on semble avoir 48 IDs presents au moins 3 fois. Creusons plus loin pour voir si on identifie un groupe d’IDs problematique. Théoriquement, si les gens avaient respecté les régles pour la création de l’identifiant anonyme, l’identifiant devrait suivre le pattern suivant: 1 chiffre - 2 lettres - 2 chiffres.
Voyons pour combien de lignes ce pattern est respecté:
| FALSE | TRUE |
|---|---|
| 44 | 806 |
Cela nous dit que même si on regarde seulement les gens qui ont respecté la procedure pour la création des IDs, on à tjrs des lignes de trop. D’abord, regardons les entrés des gens qui ont tapé un ID au pif (donc les “falses”).
Néanmoins, s’ils ont utilisé 2 fois le même identifiant aberrant on pourra quand même les apparier. Voyons donc les IDs qui apparaissent >2 fois. Les IDs aberrants qui apparaissent 2 fois on peut les utiliser, les IDs qui apparaissent qu’une seule fois, idem, on peut les garder pour la partie descriptive (carrément ils ne sera pas possible de les utiliser pour la comparaison avant-après).
On voit que le seul ID problematique parmi les aberrants est “12345”. Voyons les lignes qui correspondent à cet ID.
On semble avoir 1 IDE et 1 MG, qui ont un doublon de “2ème test”. Si on regarde avec attention la ligne 3 et 4 sont identiques, avec une “filière” différente. Si la ligne 3 et 4 étaient par exemple “IDE” et la ligne 5 et 6 étaient “medecine generale” on aurait identifié des doublons –> problème résolu. Mais dans ce cas on a des doublons ET 2 personnes qui ont rentré 2 fois le “2ème test” en changeant aussi de filière. Il est donc impossible de rattacher ces questionnaires à un “test 1”. Ce qui est très très bizarre, est que les lignes 3 et 5 sont IDENTIQUES aux lignes 4 et 6. Ce qu’on peut faire, est prendre la moyenne des lignes 3-5 et 4-6. Le même approche nous sera utile pour gérer les IDs non aberrants doublons qui sont les suivants:
A ce point, avant de passer à regarder l’ensemble des tests appariés, on peut quand meme jetter un coup d’œil à “test 1” et “test 2” séparément pour voir comment les score sont distribués.
| Nb missing values | frequency | % |
|---|---|---|
| Post | ||
| 0 | 395 | 93.16 |
| 1 | 20 | 4.72 |
| 2 | 4 | 0.94 |
| 3 | 1 | 0.24 |
| 4 | 2 | 0.47 |
| 5 | 2 | 0.47 |
| Pre | ||
| 0 | 376 | 88.26 |
| 1 | 33 | 7.75 |
| 2 | 10 | 2.35 |
| 3 | 2 | 0.47 |
| 4 | 1 | 0.23 |
| 5 | 3 | 0.70 |
| 6 | 1 | 0.23 |
| vars | n | mean | deviation_standard | min | max | range | ecart_type | |
|---|---|---|---|---|---|---|---|---|
| Ensemble | 1 | 850 | 6.229 | 0.823 | 1.11 | 7 | 5.89 | 0.028 |
| pre | 1 | 426 | 5.918 | 0.830 | 1.11 | 7 | 5.89 | 0.040 |
| post | 1 | 424 | 6.542 | 0.688 | 2.10 | 7 | 4.90 | 0.033 |
| filiere | vars | n | mean | deviation_standard | min | max | range | ecart_type |
|---|---|---|---|---|---|---|---|---|
| IDE | 1 | 176 | 6.058 | 0.792 | 1.11 | 7 | 5.89 | 0.060 |
| MKE | 1 | 48 | 6.031 | 0.787 | 3.85 | 7 | 3.15 | 0.114 |
| maieutique | 1 | 25 | 5.818 | 0.881 | 3.25 | 7 | 3.75 | 0.176 |
| medecine generale | 1 | 99 | 5.677 | 0.894 | 3.42 | 7 | 3.58 | 0.090 |
| orthophonie | 1 | 29 | 6.044 | 0.599 | 4.60 | 7 | 2.40 | 0.111 |
| pharmacie | 1 | 51 | 5.777 | 0.840 | 2.74 | 7 | 4.26 | 0.118 |
| NA | 1 | 3 | 5.650 | 1.169 | 4.95 | 7 | 2.05 | 0.675 |
Prenons maintenant la population composée seulement par des IDs uniques (qui apparaissent au max 1 fois par test).
Nous avons un total de 325 sujets, repartis de la façon suivante. Attention, ceux ne sont pas encore les sujets qui ont fait les 2 tests, ceux ci sont tous les IDs qui apparaissent au max 1 fois par test.
| filiere | Nb sujet participants | % |
|---|---|---|
| IDE | 129 | 39.69 |
| maieutique | 18 | 5.54 |
| medecine generale | 75 | 23.08 |
| MKE | 41 | 12.62 |
| orthophonie | 20 | 6.15 |
| pharmacie | 34 | 10.46 |
| NA | 8 | 2.46 |
| Total | 325 | 100.00 |
La différence par rapport à la distribution précédente est presque invisible, ce qui est bien. Nous ne sommes pas en train d’introduire des biais comme involontairement sélectionner une sous-population spécifique. Voyons maintenant qui sont les 8 sujets sans filière:
Apparémment ce sont des gens qui ont fait seulement le 2ème test.
Voyons sur tout l’ensemble de tests, combien de données manquantes on a. Ce sont des “vraies” données manquantes OU des “NSP” qui n’était pas pertinents pour la question et vraisemblablement pris pour des “Ne sait pas”.
| Nb missing values | Freq | % |
|---|---|---|
| 0 | 524 | 90.19 |
| 1 | 36 | 6.20 |
| 2 | 13 | 2.24 |
| 3 | 3 | 0.52 |
| 4 | 1 | 0.17 |
| 5 | 4 | 0.69 |
On voit que les tests sont bien complets globalement. Seulement 7 questionnaires ont >=3 valeurs manquantes.
| vars | n | mean | deviation_standard | min | max | range | ecart_type | |
|---|---|---|---|---|---|---|---|---|
| Ensemble | 1 | 581 | 6.188 | 0.828 | 2.10 | 7 | 4.90 | 0.034 |
| pre | 1 | 315 | 5.899 | 0.809 | 2.74 | 7 | 4.26 | 0.046 |
| post | 1 | 266 | 6.530 | 0.714 | 2.10 | 7 | 4.90 | 0.044 |
| filiere | vars | n | mean | deviation_standard | min | max | range | ecart_type |
|---|---|---|---|---|---|---|---|---|
| IDE | 1 | 128 | 6.051 | 0.680 | 3.00 | 7.00 | 4.00 | 0.060 |
| MKE | 1 | 40 | 6.013 | 0.804 | 3.85 | 7.00 | 3.15 | 0.127 |
| maieutique | 1 | 18 | 5.787 | 0.937 | 3.25 | 6.95 | 3.70 | 0.221 |
| medecine generale | 1 | 75 | 5.660 | 0.919 | 3.42 | 7.00 | 3.58 | 0.106 |
| orthophonie | 1 | 20 | 6.034 | 0.657 | 4.60 | 7.00 | 2.40 | 0.147 |
| pharmacie | 1 | 34 | 5.703 | 0.895 | 2.74 | 7.00 | 4.26 | 0.153 |
J’ai un peu reformatté le tableau suivant que j’avais déjà fait.
| filiere | id | nb_questionnaires | valeurs_manquantes | Tests non apparies | Tests apparies |
|---|---|---|---|---|---|
| IDE | 129 (39.69%) | 229 (39.41%) | 52 (54.74%) | 29 (47.54%) | 100 (39.06%) |
| MKE | 41 (12.62%) | 72 (12.39%) | 8 (8.42%) | 10 (16.39%) | 31 (12.11%) |
| maieutique | 18 (5.54%) | 34 (5.85%) | 3 (3.16%) | 2 (3.28%) | 16 (6.25%) |
| medecine generale | 75 (23.08%) | 140 (24.1%) | 26 (27.37%) | 10 (16.39%) | 65 (25.39%) |
| orthophonie | 20 (6.15%) | 36 (6.2%) | 5 (5.26%) | 4 (6.56%) | 16 (6.25%) |
| pharmacie | 34 (10.46%) | 62 (10.67%) | 1 (1.05%) | 6 (9.84%) | 28 (10.94%) |
| NA | 8 (2.46%) | 8 (1.38%) | 0 (0%) | NA (NA%) | NA (NA%) |
| Total | 325 (100%) | 581 (100%) | 95 (100%) | 61 (100%) | 256 (100%) |
| filiere | id | nb_questionnaires | valeurs_manquantes |
|---|---|---|---|
| IDE | 100 (39.06%) | 200 (39.06%) | 46 (55.42%) |
| MKE | 31 (12.11%) | 62 (12.11%) | 7 (8.43%) |
| maieutique | 16 (6.25%) | 32 (6.25%) | 3 (3.61%) |
| medecine generale | 65 (25.39%) | 130 (25.39%) | 22 (26.51%) |
| orthophonie | 16 (6.25%) | 32 (6.25%) | 4 (4.82%) |
| pharmacie | 28 (10.94%) | 56 (10.94%) | 1 (1.2%) |
| Total | 256 (100%) | 512 (100%) | 83 (100%) |
| Nb missing values | Freq | % |
|---|---|---|
| 0 | 463 | 90.43 |
| 1 | 31 | 6.05 |
| 2 | 11 | 2.15 |
| 3 | 2 | 0.39 |
| 4 | 1 | 0.20 |
| 5 | 4 | 0.78 |
| n | mean | deviation_standard | min | max | range | ecart_type | |
|---|---|---|---|---|---|---|---|
| Ensemble | 512 | 6.206 | 0.839 | 2.10 | 7 | 4.90 | 0.037 |
| pre | 256 | 5.885 | 0.825 | 2.74 | 7 | 4.26 | 0.052 |
| post | 256 | 6.527 | 0.723 | 2.10 | 7 | 4.90 | 0.045 |
## `summarise()` has grouped output by 'filiere'. You can override using the
## `.groups` argument.
| test | n | mean | sd | min | max | range | se |
|---|---|---|---|---|---|---|---|
| IDE | |||||||
| post | 100 | 6.680 | 0.685 | 2.10 | 7.00 | 4.90 | 0.069 |
| pre | 100 | 6.039 | 0.683 | 3.00 | 7.00 | 4.00 | 0.068 |
| Maieutique | |||||||
| post | 31 | 6.673 | 0.530 | 5.05 | 7.00 | 1.95 | 0.095 |
| pre | 31 | 5.920 | 0.861 | 3.85 | 6.90 | 3.05 | 0.155 |
| Medecine generale | |||||||
| post | 16 | 6.644 | 0.393 | 5.85 | 7.00 | 1.15 | 0.098 |
| pre | 16 | 5.854 | 0.931 | 3.25 | 6.95 | 3.70 | 0.233 |
| MKE | |||||||
| post | 65 | 6.217 | 0.884 | 4.00 | 7.00 | 3.00 | 0.110 |
| pre | 65 | 5.658 | 0.945 | 3.42 | 7.00 | 3.58 | 0.117 |
| Orthophonie | |||||||
| post | 16 | 6.639 | 0.363 | 5.95 | 7.00 | 1.05 | 0.091 |
| pre | 16 | 6.019 | 0.670 | 4.60 | 6.90 | 2.30 | 0.167 |
| Pharmacie | |||||||
| post | 28 | 6.407 | 0.718 | 4.65 | 7.00 | 2.35 | 0.136 |
| pre | 28 | 5.768 | 0.904 | 2.74 | 7.00 | 4.26 | 0.171 |
Pour realiser un test de student, une parmi les plusieurs conditions de validité est que la variable qu’on étudie doit suivre la loi normale: sa distribution a une forme en cloche simmetrique. Or, on a vu à la fin du chapitre 3 que ce n’est pas du tout le cas. Cela nous rend “impossible” (“” parce que en vrai je peux quand meme le lancer sans soucis le test et très probablement personne te demanderait si tu as verifié les conditions de validité du test) utiliser le t student et on va devoir “se contenter” d’un test non-parametrique (quand la variable étudie ne suit pas une distribution précise, comme la loi normale par example).
L’equivalent non parametrique du t student apparié est le test de rang signé de wilcoxon avec correction de continuité. Je me repète, le test du rang signé de Wilcoxon est un test statistique non paramétrique qui compare deux échantillons apparentés ou des mesures répétées sur un seul échantillon afin d’évaluer si les rangs moyens de leur population diffèrent (c’est-à-dire qu’il s’agit d’un test de différence par paires). Il peut être utilisé comme alternative au test t de Student lorsque la population ne peut pas être supposée normalement distribuée.
En statistique, le “rang” fait référence à la position d’une valeur particulière au sein d’un ensemble de données lorsqu’elles sont classées par ordre croissant ou décroissant.
Par exemple, considérons l’ensemble de données suivant : {3, 7, 1, 4, 6}. Si nous le classons par ordre croissant, nous obtenons {1, 3, 4, 6, 7}. Le “rang” de chaque nombre dans l’ensemble de données original est alors sa position dans l’ensemble de données ordonné. Ainsi, le rang de 3 est 2, le rang de 7 est 5, le rang de 1 est 1, le rang de 4 est 3 et le rang de 6 est 4.
Dans le cadre du test du rang signé de Wilcoxon, les différences entre des observations appariées sont classées en fonction de leur valeur absolue. Le signe de la différence est ensuite appliqué au rang. Cela permet au test de prendre en compte à la fois l’ampleur des différences (par le biais des rangs des différences absolues) et le sens des différences (par le biais des signes).
Pense à l’ECN: on veut comparer la performance des éléves de 2 lycées. Le test de wilcoxon pourrait nous aider à répondre à la question “est-ce que si le classement (rang) median des élèves d’un lycée X ou Y est meilleure que le classement (rang) median de l’autre.
Je vais lancer le test sur l’ensemble de la population et t’expliquer le résultat.
##
## Wilcoxon signed rank test with continuity correction
##
## data: paired_data$post and paired_data$pre
## V = 27545, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
“Test de rang signé de Wilcoxon avec correction de continuité” : Ceci indique le test spécifique utilisé. La partie “correction de continuité” est une technique permettant d’ajuster le test de rang signé de Wilcoxon pour tenir compte du fait que nous utilisons une version discrète d’une distribution continue.
“Données : paired_data$post et paired_data$pre” : Ceci spécifie les deux ensembles de mesures ou d’observations qui ont été comparés dans le test.
“V = 52171”: Il s’agit de la statistique du test. Pour le test du rang signé de Wilcoxon, il s’agit de la somme des rangs des différences positives (ou de la somme des rangs négatifs, selon le logiciel utilisé).
“p-value < 2.2e-16” : Il s’agit de la valeur p du test, qui est utilisée pour interpréter les résultats. Si la valeur p est inférieure au seuil de signification choisi (souvent 0,05), l’hypothèse nulle est rejetée. Dans ce cas, la valeur p est extrêmement faible, et il y a donc de bonnes raisons de rejeter l’hypothèse nulle.
“Hypothèse alternative : le véritable distance entre les 2 medianes n’est pas égal à 0” : Il s’agit de l’hypothèse alternative du test. Pour le test du rang signé de Wilcoxon, l’hypothèse nulle est que la médiane des différences entre les paires d’observations est égale à zéro. Cette hypothèse alternative indique que la véritable médiane des différences n’est pas nulle.
En termes simples, le test indique qu’il existe une différence statistiquement significative entre les mesures avant et après dans ces données appariées, avec une valeur p très faible (<0.001) fournissant une preuve solide contre l’hypothèse nulle.
Je vais faire la même chose pour chaque filière prise singulièrement.
| filiere | p.value | method |
|---|---|---|
| medecine generale | < 0.001 | Wilcoxon signed rank test with continuity correction |
| IDE | < 0.001 | Wilcoxon signed rank test with continuity correction |
| maieutique | < 0.001 | Wilcoxon signed rank test with continuity correction |
| pharmacie | 0.002 | Wilcoxon signed rank test with continuity correction |
| orthophonie | 0.006 | Wilcoxon signed rank test with continuity correction |
| MKE | < 0.001 | Wilcoxon signed rank test with continuity correction |
## Observed test statistic: 0.6417188
## P-value: < 0.001
Voici comment fonctionne un test de permutation, étape par étape :
Formuler l’hypothèse : on commence par énoncer l’hypothèse nulle (H₀) et l’hypothèse alternative (H₁). L’hypothèse nulle suppose qu’il n’y a pas de différence entre les groupes, tandis que l’hypothèse alternative suggère qu’il y a une différence significative.
Combiner et mélanger les données : Prenez les mesures (hauteurs) des deux groupes et combinez-les en un seul ensemble de données. Ensuite, mélangez ou permutez au hasard les étiquettes (groupe A et groupe B) associées aux mesures. Ce mélange rompt toute association entre les groupes.
Repeter les étapes 2 et 3 : Répétez les étapes 2 et 3 plusieurs fois (par exemple, 1 000 fois ou plus) pour créer une distribution de statistiques de test sous l’hypothèse nulle. Chaque fois que vous mélangez les données et calculez la statistique de test, vous simulez ce qui se passerait s’il n’y avait pas de véritable différence entre les groupes.
Comparez la statistique de test observée : On compare la statistique de test observée (calculée à partir des données originales, non mélangées) à la distribution des statistiques de test obtenues à partir des permutations. Il s’agit essentiellement de se demander : “Quelle est l’ampleur de la statistique de test observée par rapport à ce que l’on pourrait attendre du seul hasard ?”
Calculer la valeur p : Calculez la valeur p en déterminant la proportion de statistiques de test permutées qui sont plus extrêmes (plus grandes ou plus petites) que la statistique de test observée. Cette valeur p représente la probabilité d’observer une statistique de test aussi extrême, ou plus extrême, que celle qu’on a obtenue, en supposant que l’hypothèse nulle est vraie. Une petite valeur p suggère qu’il est peu probable que la différence observée soit le fruit du hasard.
Sur la base de la valeur p et du niveau de signification qu’on a défini (habituellement α = 0,05), on décide de rejeter ou non l’hypothèse nulle. Si la valeur p est inférieure au seuil de signification, on rejete l’hypothèse nulle et concluez qu’il existe des preuves d’une différence significative entre les groupes.
C’est l’idée de base d’un test de permutation. En mélangeant au hasard les étiquettes des groupes et en comparant la statistique de test observée à la distribution des statistiques de test permutées, les tests de permutation permettent d’évaluer la probabilité d’observer la différence observée sous l’hypothèse nulle d’absence de différence. Il s’agit d’une technique qui ne repose pas sur des hypothèses strictes concernant la distribution des données, ce qui la rend applicable à un large éventail de scénarios. Donc on a pas le problème de la non-normalité comme avec le t student et on a pas le problème des ex aequo comme avec wilcoxon. Quand possible, il est préférable appliquer les autres tests parce qu’ils sont plus puissants.
| filiere | NSP |
|---|---|
| IDE | 38 |
| MKE | 5 |
| maieutique | 3 |
| medecine generale | 12 |
| orthophonie | 1 |
| pharmacie | 1 |
| question | filiere | n |
|---|---|---|
| s1q4 | IDE | 14 |
| s1q4 | MKE | 1 |
| s1q4 | maieutique | 1 |
| s1q4 | medecine generale | 4 |
| s1q4 | orthophonie | 1 |
| s1q4 | pharmacie | 1 |
| s1q5 | MKE | 1 |
| s2q3 | IDE | 1 |
| s3q1 | IDE | 3 |
| s3q1 | medecine generale | 2 |
| s3q2 | IDE | 8 |
| s3q2 | MKE | 3 |
| s3q2 | maieutique | 2 |
| s3q2 | medecine generale | 3 |
| s4q1 | IDE | 2 |
| s4q2 | IDE | 2 |
| s5q2 | IDE | 3 |
| s5q3 | IDE | 1 |
| s6q3 | IDE | 3 |
| s6q3 | medecine generale | 1 |
| s7q1 | medecine generale | 1 |
| s7q2 | IDE | 1 |
| s7q2 | medecine generale | 1 |
| filiere | n | Frequence_absolue | Frequence_relative_uniques_ID_par_filiere |
|---|---|---|---|
| IDE | 22 | 57.89 % | 17.05 % |
| MKE | 4 | 10.53 % | 9.76 % |
| maieutique | 2 | 5.26 % | 11.11 % |
| medecine generale | 8 | 21.05 % | 10.67 % |
| orthophonie | 1 | 2.63 % | 5 % |
| pharmacie | 1 | 2.63 % | 2.94 % |
| filiere | n | Frequence_absolue | Frequence_relative_uniques_ID_par_filiere |
|---|---|---|---|
| IDE | 2 | 20 % | 1.98 % |
| MKE | 1 | 10 % | 3.12 % |
| medecine generale | 5 | 50 % | 7.69 % |
| orthophonie | 2 | 20 % | 12.5 % |